home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / nrpas13.arc / RKDUMB.DEM < prev    next >
Text File  |  1991-05-01  |  1KB  |  51 lines

  1. PROGRAM d15r2(input,output);
  2. (* driver for routine RKDUMB *)
  3. CONST
  4.    nvar=4;
  5.    nstep=150;
  6. TYPE
  7.    glnarray = ARRAY [1..nvar] OF real;
  8. VAR
  9.    i,j : integer;
  10.    x1,x2 : real;
  11.    vstart : glnarray;
  12.    xx : ARRAY [1..200] OF real;
  13.    y : ARRAY [1..nvar,1..200] OF real;
  14.  
  15. (*$I MODFILE.PAS *)
  16. (*$I BESSJ0.PAS *)
  17.  
  18. (*$I BESSJ1.PAS *)
  19.  
  20. (*$I BESSJ.PAS *)
  21.  
  22. PROCEDURE derivs(x : real; y : glnarray;
  23.        VAR dydx : glnarray);
  24. (* The arrays y and dydx must carry the dimension given to
  25. them in the calling routine. *)
  26. BEGIN
  27.    dydx[1] := -y[2];
  28.    dydx[2] := y[1]-(1.0/x)*y[2];
  29.    dydx[3] := y[2]-(2.0/x)*y[3];
  30.    dydx[4] := y[3]-(3.0/x)*y[4]
  31. END;
  32.  
  33. (*$I RK4.PAS *)
  34.  
  35. (*$I RKDUMB.PAS *)
  36.  
  37. BEGIN
  38.    x1 := 1.0;
  39.    vstart[1] := bessj0(x1);
  40.    vstart[2] := bessj1(x1);
  41.    vstart[3] := bessj(2,x1);
  42.    vstart[4] := bessj(3,x1);
  43.    x2 := 20.0;
  44.    rkdumb(vstart,nvar,x1,x2,nstep);
  45.    writeln('x':8,'integrated':17,'bessj3':10);
  46.    FOR i := 1 to (nstep DIV 10) DO BEGIN
  47.       j := 10*i;
  48.       writeln(xx[j]:10:4,'  ',y[4,j]:12:6,bessj(3,xx[j]):12:6)
  49.    END
  50. END.
  51.